﻿using SachOnlineLibrary.DAL;
using SachOnlineLibrary.Public;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;

namespace SachOnlineLibrary.BLL
{
    public class ThongKeBLL
    {
        ThongKeDAL thongkeDAL = new ThongKeDAL();

        public DataTable LaySoLieuThongKe(int type, DateTime date)
        {
            DataTable dt = new DataTable();
            try
            {
                switch (type)
                {
                    case 0:
                        {
                            dt.Columns.Add(new DataColumn("Sách", typeof(string)));
                            dt.Columns.Add(new DataColumn("Số lượng", typeof(int)));
                            DataTable tb = thongkeDAL.ThongKeSachBanChay(date.Month, date.Year);
                            for (int i = 0; i < tb.Rows.Count; i++)
                            {
                                DataRow dr = dt.NewRow();
                                dr[0] = tb.Rows[i].ItemArray[0].ToString();
                                dr[1] = tb.Rows[i].ItemArray[1].ToString();
                                dt.Rows.Add(dr);
                            }
                            break;
                        }
                    case 1:
                        {
                            dt.Columns.Add(new DataColumn("Loại sách", typeof(string)));
                            dt.Columns.Add(new DataColumn("Số lượng", typeof(int)));
                            for (int i = 0; i < thongkeDAL.ThongKeLoaiSachBanChay(date.Month, date.Year).Rows.Count; i++)
                            {
                                dt.Rows[i][0] = thongkeDAL.ThongKeLoaiSachBanChay(date.Month, date.Year).Rows[i][0];
                                dt.Rows[i][1] = thongkeDAL.ThongKeLoaiSachBanChay(date.Month, date.Year).Rows[i][1];
                            }
                            break;
                        }
                    case 2:
                        {
                            DataTable tb = new DataTable();
                            tb = thongkeDAL.ThongKeKhachHang(date.Month, date.Year);
                            dt.Columns.Add("Độ tuổi");
                            dt.Columns.Add("Số lượng");
                            int[] soluong = { 0, 0, 0, 0, 0 };
                            foreach (DataRow row in tb.Rows)
                            {
                                if (int.Parse(row[0].ToString()) <= 20)
                                {
                                    soluong[0] += int.Parse(row[1].ToString());
                                }
                                else if (int.Parse(row[1].ToString()) <= 30)
                                {
                                    soluong[1] += int.Parse(row[1].ToString());
                                }
                                else if (int.Parse(row[2].ToString()) <= 40)
                                {
                                    soluong[2] += int.Parse(row[2].ToString());
                                }
                                else if (int.Parse(row[2].ToString()) <= 50)
                                {
                                    soluong[3] += int.Parse(row[3].ToString());
                                }
                                else
                                {
                                    soluong[4] += int.Parse(row[4].ToString());
                                }
                            }
                            dt.Rows.Add("Dưới 20 tuổi", soluong[0]);
                            dt.Rows.Add("Từ 20 tuổi đến 30 tuổi", soluong[1]);
                            dt.Rows.Add("Từ 30 tuổi đến 40 tuổi", soluong[2]);
                            dt.Rows.Add("Từ 40 tuổi đến 50 tuổi", soluong[3]);
                            dt.Rows.Add("Trên 60 tuổi", soluong[4]);
                            break;
                        }
                }
                return dt;
            }
            catch
            {
                return null;
            }
        }

        public string SachMuaNhieuNhat(DateTime date)
        {
            return thongkeDAL.SachMuaNhieuNhat(date);
        }

        public string LoaiMuaNhieuNhat(DateTime date)
        {
            return thongkeDAL.LoaiMuaNhieuNhat(date);
        }

        public string KhachHangNhieuNhat(DateTime date)
        {
            return thongkeDAL.KhachHangMuaNhieuNhat(date);
        }

        public long TongDoanhThu(DateTime date)
        {
            return thongkeDAL.TongDoanhThu(date);
        }

        public int TongSoLuong(DateTime date)
        {
            return thongkeDAL.TongSoLuong(date);
        }
    }
}
